package com.example.designmode.flyweight


/**
 * 抽象方块
 * 俄罗斯方块有不同的形状，这些形状我们抽象出AbstractBox
 * 抽象享元角色
 *
 * 内部状态：方块的形状是相同的，可以共享
 * 外部状态：颜色
 *
 * @author zhouronghua
 * @time 2022/3/9 9:05 下午
 */
abstract class AbstractBox {
    /**
     * 获取图形
     *
     * @author zhouronghua
     * @time 2022/3/9 9:07 下午
     */
    abstract fun getShape(): String

    /**
     * 显示颜色和形状
     *
     * @author zhouronghua
     * @time 2022/3/9 9:10 下午
     */
    fun display(color: String) {
        println("方块形状 ${getShape()} 颜色：$color")
    }
}